package com.rongmei.jdsync.service;

import com.rongmei.jdsync.dto.*;
import com.rongmei.jdsync.entity.Category;

import java.io.IOException;
import java.util.List;

/**
 * 京东商品分类同步服务接口
 *
 * @author dongjun
 */
public interface JdCategorySyncService {
    /**
     * 获取商品详情信息
     *
     * @param goodsId    商品ID
     * @param provinceId 省份ID（可选）
     * @param cityId     城市ID（可选）
     * @return 商品详情信息响应数据
     * @throws IOException 当API调用失败时抛出
     */
    GoodsDetailInfoResponseDto getGoodsDetailInfo(String goodsId, String provinceId, String cityId) throws IOException;

    /**
     * 保存商品详情信息
     *
     * @param goodsDetail 商品详情DTO
     */
    void saveGoodsDetail(GoodsDetailDto goodsDetail);


    /**
     * 同步京东商品分类
     *
     * @param categoryName 分类名称
     * @return 京东分类数据
     * @throws IOException 当API调用失败时抛出
     */
    JdCategoryResponseDto syncCategories(String categoryName) throws IOException;

    /**
     * 解析京东分类数据并保存到数据库
     *
     * @param responseDto 京东分类响应数据
     * @return 成功保存的分类数量
     */
    int saveCategories(JdCategoryResponseDto responseDto);

    /**
     * 根据类别的categoryId获取类别信息
     *
     * @param categoryId 类别ID
     * @return 类别信息列表
     */
    List<Category> getCategoryList(Long categoryId);

    /**
     * 获取京东商品分组
     *
     * @return 商品分组数据
     * @throws IOException 当API调用失败时抛出
     */
    JdLabelResponseDto getLabelList() throws IOException;

    /**
     * 保存京东商品分组数据到数据库
     *
     * @param responseDto 商品分组响应数据
     * @return 成功保存的分组数量
     */
    int saveLabelList(JdLabelResponseDto responseDto);

    /**
     * 获取京东商品列表
     *
     * @param requestDto 商品查询请求参数
     * @return 商品列表响应数据
     */
    JdGoodsResponseDto getGoodsList(GoodsRequestDto requestDto);
}